সি# এ async এবং await কীওয়ার্ডগুলি ব্যবহার করে অ্যাসিনক্রোনাস প্রোগ্রামিং সহজে করা যায়। অ্যাসিনক্রোনাস প্রোগ্রামিংয়ের মাধ্যমে প্রোগ্রামকে নির্দিষ্ট কিছু কাজ সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করতে হয় না, বরং সে সময়ে অন্য কাজগুলোও সম্পন্ন করতে পারে।
নিচে async
এবং await
কীভাবে কাজ করে তার একটি উদাহরণ দেওয়া হলো। এখানে একটি অ্যাসিনক্রোনাস মেথড ব্যবহার করে একটি কাজ সম্পন্ন করা হয়েছে।
using System;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
Console.WriteLine("Starting work...");
// অ্যাসিনক্রোনাস মেথড কল করা
await DoWorkAsync();
Console.WriteLine("Work completed.");
}
public static async Task DoWorkAsync()
{
Console.WriteLine("Working...");
await Task.Delay(3000); // ৩ সেকেন্ড অপেক্ষা করে
Console.WriteLine("Work is done!");
}
}
Main
মেথডে async ব্যবহার করে জানানো হয়েছে যে এটি অ্যাসিনক্রোনাস মেথড।DoWorkAsync
মেথডটি কল করা হয়েছে এবং await
ব্যবহার করে বলা হয়েছে যে এটি সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করবে।Task.Delay
একটি ৩ সেকেন্ডের ডিলে তৈরি করে, যা অ্যাসিনক্রোনাস টাইমার হিসেবে কাজ করে।আউটপুট:
Starting work...
Working...
Work is done!
Work completed.
এই প্রক্রিয়ায় Task.Delay
কাজের সময় মেইন থ্রেডকে ব্লক না করে অপেক্ষা করে। ফলে অন্যান্য কাজ সমান্তরালে চলতে পারে।
ধরা যাক, একটি মেথড সার্ভার থেকে ডেটা ফেচ করবে। এই কাজ সম্পন্ন করতে কিছুটা সময় লাগতে পারে, তাই async এবং await ব্যবহার করলে মেইন থ্রেড ব্লক না হয়ে অপেক্ষা করবে এবং ডেটা ফেচ হওয়ার পরই কেবল পরবর্তী কাজ সম্পন্ন করবে।
using System;
using System.Net.Http;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
Console.WriteLine("Fetching data...");
// অ্যাসিনক্রোনাস মেথড কল করে ডেটা ফেচ করা
string data = await FetchDataAsync();
Console.WriteLine("Data fetched: " + data);
}
public static async Task<string> FetchDataAsync()
{
using (HttpClient client = new HttpClient())
{
// কোনো URL থেকে ডেটা ফেচ করা
string result = await client.GetStringAsync("https://jsonplaceholder.typicode.com/todos/1");
return result;
}
}
}
FetchDataAsync
একটি অ্যাসিনক্রোনাস মেথড যা একটি স্ট্রিং রিটার্ন করে।FetchDataAsync
থেকে ডেটা রিটার্ন না হওয়া পর্যন্ত অপেক্ষা করে।আউটপুট:
Fetching data...
Data fetched: {id: 1, title: "...", ...}
এই উদাহরণে await
ব্যবহার করে সার্ভার থেকে ডেটা ফেচ করা হচ্ছে। অ্যাসিনক্রোনাস প্রোগ্রামিং এর মাধ্যমে await
নিশ্চিত করে যে ডেটা সম্পূর্ণভাবে লোড হওয়া পর্যন্ত মেইন থ্রেড অপেক্ষা করবে, তবে ব্লক হবে না।
async মেথডের রিটার্ন টাইপ:
void
: ইভেন্ট হ্যান্ডলার মেথডে ব্যবহৃত হয়।Task
: যখন মেথড কিছু রিটার্ন করবে না।Task<T>
: যখন মেথড কিছু রিটার্ন করবে, যেমন Task<string>
, যেখানে string
রিটার্ন হবে।await কেবল async মেথডের মধ্যে ব্যবহার করা যায়: await
ব্যবহারের জন্য মেথডে async
কিওয়ার্ড ব্যবহার করা প্রয়োজন।
পারফরম্যান্স বৃদ্ধি: অ্যাসিনক্রোনাস প্রোগ্রামিং ব্যবহার করে প্রোগ্রামের পারফরম্যান্স উন্নত করা যায়। এতে UI ব্লক না করে সমান্তরালে কাজ করতে পারে।
সহজ ও সংক্ষিপ্ত কোড: async
এবং await
এর মাধ্যমে জটিল অ্যাসিনক্রোনাস প্রোগ্রামিং সহজে করা যায় এবং কোডও সংক্ষিপ্ত হয়।
async
এবং await
এর ব্যবহার করে সি# এ অ্যাসিনক্রোনাস প্রোগ্রামিং সহজে করা যায়, যা প্রোগ্রামের কার্যক্ষমতা এবং রেসপন্সিভনেস বৃদ্ধি করে।
আরও দেখুন...